package com.algorithm.ocean.interview;

import org.junit.Test;

/**
 * 有一对兔子，第三个月会生一对小兔子，以后每个月都生一对小兔子，
 * 小兔子第三个月开始也是每月生一对小兔子，假设兔子不会死，
 * 请实现查询任意一个月一共有多少只兔子？
 *
 * @author aFei
 * @since 2022/4/3
 */
public class Len003 {
    /**
     * 方法1：递归
     *
     * @param month 月份
     * @return 兔子对数
     */
    public static int getNum(int month) {
        if (month < 3) {
            return 1;
        }
        return getNum(month - 1) + getNum(month - 2);
    }

    public static void main(String[] args) {
        int month = 5;  // 月份
        System.out.println(Len003.getNum(month));
    }

    /**
     * 方法2：for循环全部月份
     */
    int s1 = 1;
    int s2 = 1;
    int month = 8;
    int temp;

    @Test
    public void getRabbitNum() {
        for (int i = 1; i <= month; i++) {
            if (i == 1) {
                System.out.println("第1个月的兔子对数：" + s1);
                continue;
            } else if (i == 2) {
                System.out.println("第2个月的兔子对数：" + s2);
                continue;
            } else {
                temp = s2;
                s2 = s1 + s2;
                s1 = temp;
                System.out.println("第" + i + "个月的兔子对数：" + s2);
            }
        }
    }

}
/*
1、  1*2
2、  1*2
3、  1*2                             1*2
4、  1*2                 1*2         1*2
5、  1*2         1*2     1*2         1*2         1*2
6、  1*2     1*2 1*2     1*2     1*2 1*2     1*2 1*2
7、  1*2 1*2 1*2 1*2 1*2 1*2 1*2 1*2 1*2 1*2 1*2 1*2 1*2

1、  1
2、  1
3、  2
4、  3
5、  5
6、  8
7、  13
 */